package com.aiwiown.face.domain;

import com.aiwiown.face.ApiObject;
import com.aiwiown.face.domain.params.ApiParamType;
import com.aiwiown.face.internal.mapping.ApiField;

import java.io.File;

/**
 * @ClassName : FaceDetectModel
 * @Description : 人脸检测和人脸分析
 * @Author : dbin0123
 * @Date: 2020-03-14 16:06
 */
public class FaceCompareModel extends ApiObject {

    private static final long serialVersionUID = 5080000578929695709L;

    /**
     * 第一个人脸标识 face_token，优先使用该参数
     */
    @ApiField("face_token1")
    private String faceToken1;
    /**
     * 第一张图片的 URL
     */
    @ApiField("image_url1")
    private String imageUrl1;
    /**
     * 第一张图片，二进制文件，需要用 post multipart/form-data 的方式上传。
     */
    @ApiField(value = "image_file1", paramType = ApiParamType.FILE)
    private File imageFile1;
    /**
     * base64 编码的二进制图片数据
     * 如果同时传入了 image_url、image_file 和 image_base64 参数，本API使用顺序为 image_file 优先，image_url 最低。
     */
    @ApiField("image_base64_1")
    private String imageBase641;

    /**
     * 第一个人脸标识 face_token，优先使用该参数
     */
    @ApiField("face_token2")
    private String faceToken2;
    /**
     * 第一张图片的 URL
     */
    @ApiField("image_url2")
    private String imageUrl2;
    /**
     * 第一张图片，二进制文件，需要用 post multipart/form-data 的方式上传。
     */
    @ApiField(value = "image_file2", paramType = ApiParamType.FILE)
    private File imageFile2;
    /**
     * base64 编码的二进制图片数据
     * 如果同时传入了 image_url、image_file 和 image_base64 参数，本API使用顺序为 image_file 优先，image_url 最低。
     */
    @ApiField("image_base64_2")
    private String imageBase642;


    /**
     * 仅正式 API Key 可以使用
     * 当传入图片进行人脸检测时，是否指定人脸框位置进行检测。
     * 如果此参数传入值为空，或不传入此参数，则不使用此功能。本 API 会自动检测图片内所有区域的所有人脸。
     * 如果使用正式 API Key 对此参数传入符合格式要求的值，则使用此功能。需要传入一个字符串代表人脸框位置，系统会根据此坐标对框内的图像进行人脸检测，以及人脸关键点和人脸属性等后续操作。系统返回的人脸矩形框位置会与传入的 face_rectangle 完全一致。对于此人脸框之外的区域，系统不会进行人脸检测，也不会返回任何其他的人脸信息。
     * 参数规格：四个正整数，用逗号分隔，依次代表人脸框左上角纵坐标（top），左上角横坐标（left），人脸框宽度（width），人脸框高度（height）。例如：70,80,100,100
     * 注：只有在传入 image_url1、image_file1 和 image_base64_1 三个参数中任意一个时，本参数才生效。
     */
    @ApiField("face_rectangle1")
    private String faceRectangle1;

    /**
     * 仅正式 API Key 可以使用
     * 当传入图片进行人脸检测时，是否指定人脸框位置进行检测。
     * 如果此参数传入值为空，或不传入此参数，则不使用此功能。本 API 会自动检测图片内所有区域的所有人脸。
     * 如果使用正式 API Key 对此参数传入符合格式要求的值，则使用此功能。需要传入一个字符串代表人脸框位置，系统会根据此坐标对框内的图像进行人脸检测，以及人脸关键点和人脸属性等后续操作。系统返回的人脸矩形框位置会与传入的 face_rectangle 完全一致。对于此人脸框之外的区域，系统不会进行人脸检测，也不会返回任何其他的人脸信息。
     * 参数规格：四个正整数，用逗号分隔，依次代表人脸框左上角纵坐标（top），左上角横坐标（left），人脸框宽度（width），人脸框高度（height）。例如：70,80,100,100
     * 注：只有在传入image_url2、image_file2 和image_base64_2 三个参数中任意一个后本参数才生效。
     */
    @ApiField("face_rectangle2")
    private String faceRectangle2;

    public String getFaceToken1() {
        return faceToken1;
    }

    public void setFaceToken1(String faceToken1) {
        this.faceToken1 = faceToken1;
    }

    public String getImageUrl1() {
        return imageUrl1;
    }

    public void setImageUrl1(String imageUrl1) {
        this.imageUrl1 = imageUrl1;
    }

    public File getImageFile1() {
        return imageFile1;
    }

    public void setImageFile1(File imageFile1) {
        this.imageFile1 = imageFile1;
    }

    public String getImageBase641() {
        return imageBase641;
    }

    public void setImageBase641(String imageBase641) {
        this.imageBase641 = imageBase641;
    }

    public String getFaceToken2() {
        return faceToken2;
    }

    public void setFaceToken2(String faceToken2) {
        this.faceToken2 = faceToken2;
    }

    public String getImageUrl2() {
        return imageUrl2;
    }

    public void setImageUrl2(String imageUrl2) {
        this.imageUrl2 = imageUrl2;
    }

    public File getImageFile2() {
        return imageFile2;
    }

    public void setImageFile2(File imageFile2) {
        this.imageFile2 = imageFile2;
    }

    public String getImageBase642() {
        return imageBase642;
    }

    public void setImageBase642(String imageBase642) {
        this.imageBase642 = imageBase642;
    }

    public String getFaceRectangle1() {
        return faceRectangle1;
    }

    public void setFaceRectangle1(String faceRectangle1) {
        this.faceRectangle1 = faceRectangle1;
    }

    public String getFaceRectangle2() {
        return faceRectangle2;
    }

    public void setFaceRectangle2(String faceRectangle2) {
        this.faceRectangle2 = faceRectangle2;
    }
}
